Applications or software designed for operation on processors may, in some instances, perform unsatisfactorily, e.g., hang or take an unusually long time in responding to a user's input. The unsatisfactory performance may be due to computer code of the application itself, or may be due to the computing environment in which the application operates. Unsatisfactory or slow performance can be unpleasant for a user, and in some cases result in diversion to another application, a restarting of the application, or a rebooting of a computing system.
Efforts have been made to analyze performance of some software applications as a plurality of the applications are placed in operation on a plurality of computing systems. For some methods of analysis, explicit instrumentation or probes comprising additional segments of software code are included in the application. Typically, the instrumentation is placed at the “start” and “end” of selected sequences or scenarios executed by the application. The explicit instrumentation provides means to monitor the performance of an application as it operates, and produce a record that includes information about the application as it operates. Should the application behave in an undesirable or unexpected manner for an instrumented scenario, information from the record can be retrieved for subsequent analysis of the scenario.
The paradigm of application-performance analysis via explicit instrumentation requires additional code, e.g., specific instrumentation, to be added at selected locations in the code of the application. The developer of the application may be the only entity that knows the targeted sequences or scenarios of the instrumentation, and what the information provided by the instrumentation means. Further, a developer would not easily be able to analyze the performance of non-instrumented applications, e.g., applications designed by third parties to operate in conjunction with a developer's application.